[pageId]-d54ccdf84c154698.js.map 13 KB

1
  1. {"version":3,"file":"static/chunks/pages/page/[pageId]-d54ccdf84c154698.js","mappings":"wFACKA,OAAOC,SAAWD,OAAOC,UAAY,IAAIC,KAAK,CAC7C,iBACA,WACE,OAAO,EAAQ,W,qECiBvB,IAPqB,WACnB,IAAMC,GAAYC,EAAAA,EAAAA,IAAYC,EAAAA,GAAiBC,EAAAA,IACzCC,GAAcH,EAAAA,EAAAA,IAAYI,EAAAA,GAAwBF,EAAAA,IAExD,OADmBG,EAAAA,EAAAA,IAAYN,EAAWI,GAAlCG,S,wSCuBV,EAnB2B,SAACC,EAAgBC,GAC1C,IAAQC,GAAiBC,EAAAA,EAAAA,KAAjBD,KACFV,GAAYC,EAAAA,EAAAA,IAAYC,EAAAA,GAAiBC,EAAAA,IACzCS,GAAqBX,EAAAA,EAAAA,IAAYY,EAAAA,IACjCC,GAAWC,EAAAA,EAAAA,KACXC,GAASC,EAAAA,EAAAA,SAAoBH,GAAUI,EAAAA,EAAAA,IAAqBlB,IAE5BmB,GAAAA,EAAAA,EAAAA,IACpCC,EAAAA,EAAAA,IAAkBZ,EAAQa,EAAQL,IAClC,mB,0CAAYM,MAAAA,C,GAAAA,EAAAA,EAAAA,IAAcd,EAAQa,EAAQL,UAC1C,CACEO,aAAcd,EACde,mBAAoBZ,IALhBa,EAA8BN,EAA9BM,KASR,MAAO,CAAEC,UAT6BP,EAAxBQ,aASoBF,KAAAA,EAAMG,MATFT,EAAVS,Q,kFC0I9B,EA5HqC,Y,IAAGC,EAAQ,EAARA,SAAUC,EAAuB,EAAvBA,WAC5BnB,GAAAA,EAAAA,EAAAA,GAAe,UAA3BoB,EAAYpB,EAAZoB,EAAGrB,EAASC,EAATD,KAETsB,GACEC,EAAAA,EAAAA,aADFD,MAASxB,OAGLM,GAAWC,EAAAA,EAAAA,KAKbmB,EAAAA,EAAmBC,OAAO3B,GAASC,GAHrCgB,EAGES,EAHFT,KACAC,EAEEQ,EAFFR,UACAE,EACEM,EADFN,MAGIhB,GAAqBX,EAAAA,EAAAA,IAAYY,EAAAA,IACjCuB,GAAoBnC,EAAAA,EAAAA,IAAYoC,EAAAA,GAAyBlC,EAAAA,IAM3DmC,GAAAA,EAAAA,EAAAA,GACFH,OAAO3B,GACP+B,EAAAA,GAAAA,KACA9B,EACA2B,EACAxB,GARAa,EAGEa,EAHFb,KACAC,EAEEY,EAFFZ,UACAG,EACES,EADFT,SASF,GACEA,GACArB,EAASgC,EAAAA,GAAiBC,OAAO3B,KACjC4B,GACAC,EAEA,OAAO,SAACC,EAAAA,QAAK,CAACC,WAAY,MAG5B,GAAIC,GAAuBC,EACzB,OAAO,SAACC,EAAAA,EAAO,IAGjB,IAAMC,GAAOC,EAAAA,EAAAA,IAAqBT,OAAOjC,IACnCiB,GAAO0B,EAAAA,EAAAA,SAAmBC,EAAiBC,GAEjD,OACE,sB,WACE,SAACC,EAAAA,EAAc,CACbC,MAAO,GAAgBC,OAAbzB,EAAE,QAAQ,KAA2C,QAAxCyB,EAAAA,EAAAA,IAAkBf,OAAOjC,GAASE,IACzD+C,aAAaC,EAAAA,EAAAA,IAA4BjC,GACzCkC,WAAWC,EAAAA,EAAAA,IAAgBlD,EAAMuC,GACjCY,oBAAoBC,EAAAA,EAAAA,IAAsBb,MAE5C,SAACc,EAAAA,EAAW,CACVtD,YAAagB,EACbuC,GAAI7B,OAAO3B,GACXyD,oBAAqB1B,EAAAA,GAAAA,Y,yDCtF7B,UAT4B,SAACzB,EAAkBoD,GAC7C,OAAO,QACLC,QAAS,MACT5D,OAAQO,EACRsD,iBAAiB,GACdF,K,oECMP,UAX2B,SACzBd,EACAC,GAEA,OAAO,kBACFA,GAAc,CACjBgB,YAAajB,EACbkB,SAAU,CAAEC,eAAgBlB,EAAemB,OAAOC,a","sources":["webpack://_N_E/?d250","webpack://_N_E/./src/hooks/useGetMushaf.ts","webpack://_N_E/./src/components/QuranReader/hooks/useFetchPageVerses.ts","webpack://_N_E/./src/pages/page/[pageId].tsx","webpack://_N_E/./src/pages/page/utils/getPageVersesParams.ts","webpack://_N_E/./src/pages/page/utils/getQuranReaderData.ts"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/page/[pageId]\",\n function () {\n return require(\"private-next-pages/page/[pageId].tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/page/[pageId]\"])\n });\n }\n ","import { shallowEqual, useSelector } from 'react-redux';\n\nimport { selectQuranFont, selectQuranMushafLines } from '@/redux/slices/QuranReader/styles';\nimport { Mushaf } from '@/types/QuranReader';\nimport { getMushafId } from '@/utils/api';\n\n/**\n * Instead of repeating using multiple selectors to get the MushafId\n * in multiple components, we are introducing this hook to keep it DRY.\n *\n * TODO: apply it to everywhere using the mushafId\n *\n * @returns {Mushaf}\n */\nconst useGetMushaf = (): Mushaf => {\n const quranFont = useSelector(selectQuranFont, shallowEqual);\n const mushafLines = useSelector(selectQuranMushafLines, shallowEqual);\n const { mushaf } = getMushafId(quranFont, mushafLines);\n return mushaf;\n};\n\nexport default useGetMushaf;\n","import useTranslation from 'next-translate/useTranslation';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport useSWRImmutable from 'swr/immutable';\n\nimport { getPageVerses } from '@/api';\nimport useGetMushaf from '@/hooks/useGetMushaf';\nimport getPageVersesParams from '@/pages/page/utils/getPageVersesParams';\nimport { selectIsUsingDefaultFont, selectQuranFont } from '@/redux/slices/QuranReader/styles';\nimport { VersesResponse } from '@/types/ApiResponses';\nimport { getDefaultWordFields } from '@/utils/api';\nimport { makePageVersesUrl } from '@/utils/apiPaths';\n\n/**\n * This hooks fetches the page's verses data by the pageId\n *\n * @param {string} pageId\n * @param {VersesResponse} initialData\n *\n * @returns {{ pageVersesResponse: VersesResponse; isLoading: boolean; error: any }}\n */\n\nconst useFetchPageVerses = (pageId: string, initialData: VersesResponse) => {\n const { lang: locale } = useTranslation();\n const quranFont = useSelector(selectQuranFont, shallowEqual);\n const isUsingDefaultFont = useSelector(selectIsUsingDefaultFont);\n const mushafId = useGetMushaf();\n const params = getPageVersesParams(mushafId, getDefaultWordFields(quranFont));\n\n const { data, isValidating, error } = useSWRImmutable(\n makePageVersesUrl(pageId, locale, params),\n async () => getPageVerses(pageId, locale, params),\n {\n fallbackData: initialData,\n revalidateOnMount: !isUsingDefaultFont,\n },\n );\n\n return { isLoading: isValidating, data, error };\n};\n\nexport default useFetchPageVerses;\n","import { GetStaticPaths, GetStaticProps, NextPage } from 'next';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport getPageVersesParams from './utils/getPageVersesParams';\nimport getQuranReaderData from './utils/getQuranReaderData';\n\nimport { getPagesLookup, getPageVerses } from '@/api';\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport QuranReader from '@/components/QuranReader';\nimport useFetchPagesLookup from '@/components/QuranReader/hooks/useFetchPagesLookup';\nimport useFetchPageVerses from '@/components/QuranReader/hooks/useFetchPageVerses';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport useGetMushaf from '@/hooks/useGetMushaf';\nimport Error from '@/pages/_error';\nimport { getQuranReaderStylesInitialState } from '@/redux/defaultSettings/util';\nimport {\n selectIsUsingDefaultFont,\n selectQuranReaderStyles,\n} from '@/redux/slices/QuranReader/styles';\nimport { VersesResponse } from '@/types/ApiResponses';\nimport { getDefaultWordFields, getMushafId } from '@/utils/api';\nimport { getAllChaptersData } from '@/utils/chapter';\nimport { getLanguageAlternates, toLocalizedNumber } from '@/utils/locale';\nimport { getCanonicalUrl, getPageNavigationUrl } from '@/utils/navigation';\nimport { PAGES_MUSHAF_MAP } from '@/utils/page';\nimport { getPageOrJuzMetaDescription } from '@/utils/seo';\nimport {\n ONE_WEEK_REVALIDATION_PERIOD_SECONDS,\n REVALIDATION_PERIOD_ON_ERROR_SECONDS,\n} from '@/utils/staticPageGeneration';\nimport { isValidPageNumber } from '@/utils/validator';\nimport ChaptersData from 'types/ChaptersData';\nimport { Mushaf, QuranReaderDataType } from 'types/QuranReader';\n\ninterface Props {\n pageVerses: VersesResponse;\n hasError?: boolean;\n chaptersData: ChaptersData;\n}\n\nconst QuranicPage: NextPage<Props> = ({ hasError, pageVerses: initialData }) => {\n const { t, lang } = useTranslation('common');\n const {\n query: { pageId },\n } = useRouter();\n\n const mushafId = useGetMushaf();\n const {\n data: pageVersesData,\n isLoading: isPageVersesLoading,\n error: pageVersesError,\n } = useFetchPageVerses(String(pageId), initialData);\n\n const isUsingDefaultFont = useSelector(selectIsUsingDefaultFont);\n const quranReaderStyles = useSelector(selectQuranReaderStyles, shallowEqual);\n\n const {\n data: pagesLookupData,\n isLoading: isPagesLookupLoading,\n hasError: pagesLookupError,\n } = useFetchPagesLookup(\n String(pageId),\n QuranReaderDataType.Page,\n initialData,\n quranReaderStyles,\n isUsingDefaultFont,\n );\n\n if (\n hasError ||\n pageId > PAGES_MUSHAF_MAP[Number(mushafId)] ||\n pagesLookupError ||\n pageVersesError\n ) {\n return <Error statusCode={500} />;\n }\n\n if (isPageVersesLoading || isPagesLookupLoading) {\n return <Spinner />;\n }\n\n const path = getPageNavigationUrl(Number(pageId));\n const data = getQuranReaderData(pagesLookupData, pageVersesData);\n\n return (\n <>\n <NextSeoWrapper\n title={`${t('page')} ${toLocalizedNumber(Number(pageId), lang)}`}\n description={getPageOrJuzMetaDescription(data)}\n canonical={getCanonicalUrl(lang, path)}\n languageAlternates={getLanguageAlternates(path)}\n />\n <QuranReader\n initialData={data}\n id={String(pageId)}\n quranReaderDataType={QuranReaderDataType.Page}\n />\n </>\n );\n};\n\n// eslint-disable-next-line react-func/max-lines-per-function\nexport const getStaticProps: GetStaticProps = async ({ params, locale }) => {\n const pageIdNumber = Number(params.pageId);\n const defaultMushafId = getMushafId(\n getQuranReaderStylesInitialState(locale).quranFont,\n getQuranReaderStylesInitialState(locale).mushafLines,\n ).mushaf;\n const LONGEST_MUSHAF_ID = Mushaf.Indopak15Lines;\n\n // we need to validate the pageId first to save calling BE since we haven't set the valid paths inside getStaticPaths to avoid pre-rendering them at build time.\n if (!isValidPageNumber(pageIdNumber, LONGEST_MUSHAF_ID)) {\n return {\n notFound: true,\n };\n }\n\n // The defaultMushafId is 2 representing the Madinah Mushaf\n // PAGES_MUSHAF_MAP will return the mushaf total number of pages when passed a mushafId\n // Mushaf ID: 2 (Madinah) -> Pages Count: 604 pages\n const defaultMushafPagesCount = PAGES_MUSHAF_MAP[defaultMushafId];\n // In case the requested page/[pageId] is greater than the SSR loaded default mushaf total pages count\n // we set the pageId to the last available page, otherwise we load the passed pageID\n const pageId =\n pageIdNumber > defaultMushafPagesCount\n ? String(defaultMushafPagesCount)\n : String(params.pageId);\n\n try {\n const pageVersesResponse = await getPageVerses(\n pageId,\n locale,\n getPageVersesParams(\n defaultMushafId,\n getDefaultWordFields(getQuranReaderStylesInitialState(locale).quranFont),\n ),\n );\n const pagesLookupResponse = await getPagesLookup({\n pageNumber: Number(pageId),\n mushaf: defaultMushafId,\n });\n const chaptersData = await getAllChaptersData(locale);\n return {\n props: {\n chaptersData,\n pageVerses: getQuranReaderData(pagesLookupResponse, pageVersesResponse),\n },\n revalidate: ONE_WEEK_REVALIDATION_PERIOD_SECONDS, // verses will be generated at runtime if not found in the cache, then cached for subsequent requests for 7 days.\n };\n } catch (error) {\n return {\n props: {\n hasError: true,\n },\n revalidate: REVALIDATION_PERIOD_ON_ERROR_SECONDS, // 35 seconds will be enough time before we re-try generating the page again.\n };\n }\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => ({\n paths: [], // no pre-rendered chapters at build time.\n fallback: 'blocking', // will server-render pages on-demand if the path doesn't exist.\n});\n\nexport default QuranicPage;\n","import { Mushaf } from '@/types/QuranReader';\n\nconst getPageVersesParams = (mushafId: Mushaf, wordFields: { wordFields: string }) => {\n return {\n perPage: 'all',\n mushaf: mushafId,\n filterPageWords: true,\n ...wordFields,\n };\n};\n\nexport default getPageVersesParams;\n","import { PagesLookUpResponse, VersesResponse } from '@/types/ApiResponses';\n\nconst getQuranReaderData = (\n pagesLookupData: PagesLookUpResponse,\n pageVersesData: VersesResponse,\n) => {\n return {\n ...pageVersesData,\n pagesLookup: pagesLookupData,\n metaData: { numberOfVerses: pageVersesData.verses.length },\n };\n};\n\nexport default getQuranReaderData;\n"],"names":["window","__NEXT_P","push","quranFont","useSelector","selectQuranFont","shallowEqual","mushafLines","selectQuranMushafLines","getMushafId","mushaf","pageId","initialData","lang","useTranslation","isUsingDefaultFont","selectIsUsingDefaultFont","mushafId","useGetMushaf","params","getPageVersesParams","getDefaultWordFields","useSWRImmutable","makePageVersesUrl","locale","getPageVerses","fallbackData","revalidateOnMount","data","isLoading","isValidating","error","hasError","pageVerses","t","query","useRouter","useFetchPageVerses","String","quranReaderStyles","selectQuranReaderStyles","useFetchPagesLookup","QuranReaderDataType","PAGES_MUSHAF_MAP","Number","pagesLookupError","pageVersesError","Error","statusCode","isPageVersesLoading","isPagesLookupLoading","Spinner","path","getPageNavigationUrl","getQuranReaderData","pagesLookupData","pageVersesData","NextSeoWrapper","title","toLocalizedNumber","description","getPageOrJuzMetaDescription","canonical","getCanonicalUrl","languageAlternates","getLanguageAlternates","QuranReader","id","quranReaderDataType","wordFields","perPage","filterPageWords","pagesLookup","metaData","numberOfVerses","verses","length"],"sourceRoot":""}